home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / program / bgui12.lha / demos / Backdrop.c < prev    next >
C/C++ Source or Header  |  1995-05-25  |  12KB  |  217 lines

  1. ;/* Execute me to compile with DICE V3.0
  2. dcc backdrop.c -mi -ms -mRR -proto -lbgui
  3. quit
  4. */
  5. /*
  6.  *      BACKDROP.C
  7.  *
  8.  *      (C) Copyright 1995 Jaba Development.
  9.  *      (C) Copyright 1995 Jan van den Baard.
  10.  *          All Rights Reserved.
  11.  */
  12. #include "democode.h"
  13. #include <graphics/displayinfo.h>
  14.  
  15. /*
  16.  *      Quit object ID.
  17.  */
  18. #define ID_QUIT         1
  19.  
  20. /*
  21.  *      A borderless window ;)
  22.  */
  23. VOID Say( struct Screen *screen )
  24. {
  25.         Object                  *WO_Window, *GO_Ok;
  26.         ULONG                    signal, rc;
  27.         BOOL                     running = TRUE;
  28.  
  29.         /*
  30.          *      Create the window.
  31.          */
  32.         WO_Window = WindowObject,
  33.                 WINDOW_Borderless,      TRUE,
  34.                 WINDOW_SmartRefresh,    TRUE,
  35.                 WINDOW_RMBTrap,         TRUE,
  36.                 WINDOW_AutoAspect,      TRUE,
  37.                 WINDOW_Screen,          screen,
  38.                 WINDOW_MasterGroup,
  39.                         VGroupObject, HOffset( 4 ), VOffset( 4 ), Spacing( 3 ),
  40.                                 FRM_Type,       FRTYPE_BUTTON,
  41.                                 FRM_BackFill,   SHINE_RASTER,
  42.                                 StartMember,
  43.                                         InfoObject,
  44.                                                 FRM_Type,               FRTYPE_BUTTON,
  45.                                                 FRM_Recessed,           TRUE,
  46.                                                 INFO_TextFormat,        ISEQ_C "This demonstration shows you how to\n"
  47.                                                                         "create a backdrop, borderless window with BGUI.\n\n"
  48.                                                                         "You may recognize the GUI as the main window\n"
  49.                                                                         "of SPOT but that's because I could not\n"
  50.                                                                         "come up with something original.\n\n"
  51.                                                                         "Just click on " ISEQ_B "Quit" ISEQ_N " to exit the demo.",
  52.                                                 INFO_FixTextWidth,      TRUE,
  53.                                                 INFO_MinLines,          8,
  54.                                         EndObject,
  55.                                 EndMember,
  56.                                 StartMember,
  57.                                         HGroupObject,
  58.                                                 VarSpace( DEFAULT_WEIGHT ),
  59.                                                 StartMember, GO_Ok = KeyButton( "_OK", ID_QUIT ), EndMember,
  60.                                                 VarSpace( DEFAULT_WEIGHT ),
  61.                                         EndObject, FixMinHeight,
  62.                                 EndMember,
  63.                         EndObject,
  64.         EndObject;
  65.  
  66.         /*
  67.          *      OK?
  68.          */
  69.         if ( WO_Window ) {
  70.                 /*
  71.                  *      Add gadget key.
  72.                  */
  73.                 if ( GadgetKey( WO_Window, GO_Ok, "o" )) {
  74.                         /*
  75.                          *      Open the window.
  76.                          */
  77.                         if ( WindowOpen( WO_Window )) {
  78.                                 GetAttr( WINDOW_SigMask, WO_Window, &signal );
  79.                                 /*
  80.                                  *      Wait for somebody to click
  81.                                  *      on the "OK" gadget.
  82.                                  */
  83.                                 do {
  84.                                         Wait( signal );
  85.                                         while (( rc = HandleEvent( WO_Window )) != WMHI_NOMORE ) {
  86.                                                 if ( rc == ID_QUIT )
  87.                                                         running = FALSE;
  88.                                         }
  89.                                 } while ( running );
  90.                         }
  91.                 }
  92.                 DisposeObject( WO_Window );
  93.         }
  94. }
  95.  
  96. /*
  97.  *      Here we go...
  98.  */
  99. VOID StartDemo( void )
  100. {
  101.         struct Screen           *myscreen, *wblock;
  102.         struct DrawInfo         *dri;
  103.         struct Window           *window;
  104.         Object                  *WO_Window;
  105.         APTR                     wlock;
  106.         ULONG                    mode, rc, signal;
  107.         BOOL                     running = TRUE;
  108.  
  109.         /*
  110.          *      Lock the workbench screen.
  111.          */
  112.         if ( wblock = LockPubScreen( "Workbench" )) {
  113.                 /*
  114.                  *      Obtain it's DrawInfo.
  115.                  */
  116.                 if ( dri = GetScreenDrawInfo( wblock )) {
  117.                         /*
  118.                          *      And mode ID.
  119.                          */
  120.                         if (( mode = GetVPModeID( &wblock->ViewPort )) != INVALID_ID ) {
  121.                                 /*
  122.                                  *      Open a screen ala your workbench.
  123.                                  */
  124.                                 if ( myscreen = OpenScreenTags( NULL, SA_Depth,         dri->dri_Depth,
  125.                                                                       SA_Width,         wblock->Width,
  126.                                                                       SA_Height,        wblock->Height,
  127.                                                                       SA_DisplayID,     mode,
  128.                                                                       SA_Pens,          dri->dri_Pens,
  129.                                                                       SA_Title,         "Backdrop Demo.",
  130.                                                                       TAG_END )) {
  131.                                         /*
  132.                                          *      Create a simple backdrop window on
  133.                                          *      the screen whilst keeping the screen
  134.                                          *      title visible.
  135.                                          */
  136.                                         WO_Window = WindowObject,
  137.                                                 WINDOW_SmartRefresh,            TRUE,
  138.                                                 WINDOW_Backdrop,                TRUE,
  139.                                                 WINDOW_ShowTitle,               TRUE,
  140.                                                 WINDOW_CloseOnEsc,              TRUE,
  141.                                                 WINDOW_AutoAspect,              TRUE,
  142.                                                 WINDOW_NoBufferRP,              TRUE,
  143.                                                 WINDOW_Screen,                  myscreen,
  144.                                                 WINDOW_MasterGroup,
  145.                                                         HGroupObject, HOffset( 4 ), VOffset( 4 ), Spacing( 4 ),
  146.                                                                 StartMember,
  147.                                                                         VGroupObject, Spacing( 4 ),
  148.                                                                                 StartMember, Button( "Message list...", 0 ), EndMember,
  149.                                                                                 StartMember, Button( "Messages...",     0 ), EndMember,
  150.                                                                                 VarSpace( 40 ),
  151.                                                                                 StartMember, Button( "Import...",       0 ), EndMember,
  152.                                                                                 StartMember, Button( "Export...",       0 ), EndMember,
  153.                                                                                 StartMember, Button( "Maintenance...",  0 ), EndMember,
  154.                                                                                 StartMember, Button( "Optimize...",     0 ), EndMember,
  155.                                                                                 VarSpace( 40 ),
  156.                                                                                 StartMember, Button( "Poll...",         0 ), EndMember,
  157.                                                                                 StartMember, Button( "File request...", 0 ), EndMember,
  158.                                                                                 VarSpace( 40 ),
  159.                                                                                 StartMember, Button( "Iconify",         0 ), EndMember,
  160.                                                                                 StartMember, Button( "Quit",            ID_QUIT ), EndMember,
  161.                                                                         EndObject, FixMinSize,
  162.                                                                 EndMember,
  163.                                                                 StartMember, ListviewObject, EndObject, EndMember,
  164.                                                         EndObject,
  165.                                         EndObject;
  166.  
  167.                                         /*
  168.                                          *      Window OK?
  169.                                          */
  170.                                         if ( WO_Window ) {
  171.                                                 /*
  172.                                                  *      Open the window.
  173.                                                  */
  174.                                                 if ( window = WindowOpen( WO_Window )) {
  175.                                                         /*
  176.                                                          *      Show an explanation window.
  177.                                                          */
  178.                                                         wlock = BGUI_LockWindow( window );
  179.                                                         Say( myscreen );
  180.                                                         BGUI_UnlockWindow( wlock );
  181.                                                         /*
  182.                                                          *      Pick up the window signal.
  183.                                                          */
  184.                                                         GetAttr( WINDOW_SigMask, WO_Window, &signal );
  185.                                                         /*
  186.                                                          *      Event loop...
  187.                                                          */
  188.                                                         do {
  189.                                                                 Wait( signal );
  190.                                                                 while (( rc = HandleEvent( WO_Window )) != WMHI_NOMORE ) {
  191.                                                                         switch ( rc ) {
  192.  
  193.                                                                                 case    WMHI_CLOSEWINDOW:
  194.                                                                                 case    ID_QUIT:
  195.                                                                                         running = FALSE;
  196.                                                                                         break;
  197.                                                                         }
  198.                                                                 }
  199.                                                         } while ( running );
  200.                                                 } else
  201.                                                         Tell( "Unable to open the window\n" );
  202.                                                 DisposeObject( WO_Window );
  203.                                         } else
  204.                                                 Tell( "Unable to create the window object\n" );
  205.                                         CloseScreen( myscreen );
  206.                                 } else
  207.                                         Tell( "Unable to open the screen\n" );
  208.                         } else
  209.                                 Tell( "Unknown screen mode\n" );
  210.                         FreeScreenDrawInfo( wblock, dri );
  211.                 } else
  212.                         Tell( "Unable to get DrawInfo\n" );
  213.                 UnlockPubScreen( NULL, wblock );
  214.         } else
  215.                 Tell( "Unable to lock the Workbench screen\n" );
  216. }
  217.